一直想编写一系列有关大数据开发、数据挖掘、云计算等相关课程的学习资料,为零基础又想从事大数据行业的小伙伴提供一些参考。今天第一篇《Hadoop分布式集群环境构建
一直想编写一系列有关大数据开发、数据挖掘、云计算等相关课程的学习资料,为零基础又想从事大数据行业的小伙伴提供一些参考。今天第一篇《Hadoop分布式集群环境构建(1)》终于和大家见面了。
一
集群主机规划
二
软件安装包准备
会将软件所有安装包放入百度云盘,以供大家方便下载。链接:http://pan.baidu.com/s/1i5CdjI9 密码:f7rn
三
安装环境准备
3.1
创建用户
为每台机子创建一个不是root的用户,该集群是以hadoop来创建的。并且每台机子的用户以及密码都要相同。
操作命令:
每台服务器用root账户下:
useradd hadoop
echo "hadoop" | passwd --stdin Hadoop
3.2
配置hosts文件以及network
集群中的所有机器的 /etc/hosts 文件内容均一致,都要将集群中的各 IP 和 主机名对应起来,而且都能互相ping通。如下:
修改集群所有机子的/etc/sysconfig/network文件,HOSTNAME要改成对应的主机名。如下:
四
安装jdk
首先解压该安装包:
tar -xvzf jdk-7u67-linux-x64.tar.gz -C /
对解压的安装包重新命名
mv jdk1.7.0_67 jdk
将jdk文件复制到/home/hadoop/目录下并赋予相应权限
cp /jdk /home/hadoop/
chown -R hadoop:hadoop /home/hadoop/jdk
配置jdk的环境变量:
vi /etc/profile
使以上配置环境变量生效:
Source /etc/profile
以上步骤其余机子都需要操作一遍
五
ssh免密码通信
通过云盘中提供的一个脚本文件来实现,名称是zeno_ssh_update.sh。
首先需要创建一个目录:/home/zeno_programpag
然后将下载的脚本文件放入到这个目录下。
加入如下内容:
执行脚本文件(root用户下执行)
./zeno_ssh_update.sh hadoop hadoop
脚本后面跟的是用户名及用户密码
检查SSH免密码登录是否完成。
想系统学习大数据的话,可以加入大数据技术学习扣扣君羊:522189307
六
安装zookeeper
6.1
解压zookeeper
将该安装包解压到/home/hadoop/下
tar -zxvf zookeeper-3.4.5-cdh5.4.0.tar.gz –C /home/hadoop/
6.2
修改配置文件
在/home/hadoop/zookeeper/conf目录下,复制一各名为zoo.cfg的文件
cp zoo_sample.cfg zoo.cfg
修改zoo.cfg中的文件内容
加入如下标注的内容
创建/tmp/zookeeper/目录,并赋予hadoop的所有组及所有者权限
mkdir -p /tmp/zookeeper/
并创建myid文件,加入zoo.cfg中对应的数
将/home/Hadoop/zookeeper 复制到其他机子。
scp -r /home/Hadoop/zookeeper/ hadoop@hadoop3:/home/hadoop/
scp -r /home/Hadoop/zookeeper/ hadoop@hadoop5:/home/hadoop/
注意每台机子都需要创建myid这个文件,并修改对应的数字。
6.3
启动zookeeper服务(三台机子)
/home/hadoop/zookeeper/sbin/ zkServer.sh start
6.4
查看zookeeper服务状态
出现以下的状态就说明zookeeper成功了
七
安装hadoop集群
7.1
解压hadoop安装包
tar -zxvf hadoop-2.6.0-cdh5.4.0.tar.gz –C /home/hadoop/
chown -R hadoop:hadoop /home/hadoop/hadoop
7.2
修改配置文件
01
hadoop-env.sh文件
向其中添加如下两行:
export JAVA_HOME=/home/hadoop/jdk
export HADOOP_HOME=/home/hadoop/Hadoop
02
配置core-site.xml
#vi core-site.xml
fs.defaultFS
hdfs://mycluster
hadoop.tmp.dir
/home/hadoop/hadoop/data/hadoop/tmp
dfs.journalnode.edits.dir
/path/to/journal/node/local/data
ha.zookeeper.quorum
hadoop5:2181,hadoop4:2181,hadoop3:2181
需要手动创建:/home/hadoop/hadoop/data/hadoop/tmp目录
mkdir –p /home/hadoop/hadoop/data/hadoop/tmp
03
配置hdfs-site.xml
#vi hdfs-site.xml
dfs.journalnode.edits.dir
/home/hadoop/hadoop/ha/journal
dfs.permissions
false
dfs.permissions.enabled
false
dfs.replication
3
dfs.webhdfs.enabled
true
dfs.namenode.name.dir
/home/hadoop/hadoop/dfs/name
dfs.datanode.data.dir
/home/hadoop/hadoop/dfs/data
dfs.nameservices
mycluster
dfs.ha.namenodes.mycluster
nn1,nn2
dfs.namenode.rpc-address.mycluster.nn1
hadoop3:8020
dfs.namenode.rpc-address.mycluster.nn2
hadoop4:8020
dfs.namenode.http-address.mycluster.nn1
hadoop3:50070
dfs.namenode.http-address.mycluster.nn2
hadoop4:50070
dfs.namenode.shared.edits.dir
qjournal://hadoop5:8485;hadoop4:8485;hadoop3:8485/mycluster
dfs.ha.automatic-failover.enabled
true
dfs.client.failover.proxy.provider.mycluster
org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
dfs.ha.fencing.methods
sshfence
dfs.ha.fencing.ssh.private-key-files
/home/hadoop/.ssh/id_rsa
dfs.ha.fencing.ssh.connect-timeout
30000
04
配置mapred-env.sh
加入
export JAVA_HOME=/home/hadoop/jdk
05
配置mapred-site.xml
mapreduce.framework.name
yarn
06
配置yarn-env.sh
export JAVA_HOME=/home/hadoop/jdk
07
配置yarn-site.xml
# vi yarn-site.xml
yarn.resourcemanager.ha.enabled
true
yarn.resourcemanager.cluster-id
cluster1
yarn.resourcemanager.ha.rm-ids
rm1,rm2
yarn.resourcemanager.hostname.rm1
hadoop3
yarn.resourcemanager.hostname.rm2
hadoop4
yarn.resourcemanager.zk-address
hadoop5:2181,hadoop4:2181,hadoop3:2181
yarn.nodemanager.aux-services
mapreduce_shuffle
08
配置slaves
以上hadoop的配置就算完成了。
将/home/Hadoop/Hadoop/ 拷贝到其他机子上
scp –r /home/Hadoop/Hadoop/ hadoop@hadoop3:/home/Hadoop/
scp –r /home/Hadoop/Hadoop/ hadoop@hadoop5:/home/Hadoop/
八
启动集群
8.1
格式换命名空间(hadoop4)
/home/hadoop/hadoop/bin/hdfs zkfc -formatZK
8.2
启动journalnode(三台)
/home/hadoop/hadoop /sbin/hadoop-daemon.sh start journalnode
通过jps查看一下出现journalnode说明成功
8.3
格式化master节点并启动hadoop服务
/home/hadoop/hadoop/bin/hadoop namenode -format mycluster
启动hadoop服务
/home/hadoop/hadoop /sbin/hadoop-daemon.sh start namenode
将hadoop4这台机子格式化的文件拷贝到hadoop3上
格式化后的文件是放在/home/hadoop/hadoop/dfs/name这个目录下的。
scp /home/hadoop/hadoop/dfs/name hadoop@hadoop3:/home/hadoop/hadoop/dfs/name/
在hadoop3上启动hadoop服务
/home/hadoop/hadoop /sbin/hadoop-daemon.sh start namenode
8.4
hadoop4和hadoop3节点上启动zkfs
/home/hadoop/hadoop /sbin/hadoop-daemon.sh start zkfc
8.5
启动DataNode(三台)
/home/hadoop/hadoop /sbin/hadoop-daemon.sh start datanode
8.6
启动yarn(一台master)
/home/hadoop/hadoop /sbin/start-yarn.sh
Ok,所有的进程都已启动完成了。
网页通过端口访问hadoop:http://192.168.211.88:50070/
以下的效果说明已经完全构建了一个HA高可用的hadoop大数据集群环境。
集群环境mapreduce测试:
执行hadoop自带的mapreduce是否能够成功?
/home/hadoop/hadoop/bin/hadoop jar hadoop-mapreduce-examples-2.6.0-cdh5.4.0.jar wordcount /wangyd/ /output/wordcount1
发现mapreduce执行也是没有问题了,说明整个集群搭建ok了。